Method for improving accuracy of a time estimate used in digital rights management (DRM) license validation

ABSTRACT

A method for improving accuracy of a time estimate used in digital rights management (DRM) license validation is disclosed. In one embodiment, a memory device receives a request to validate a DRM license stored on the memory device, wherein the DRM license is associated with a time stamp update policy (TUP) that specifies when a new time stamp is needed. Before attempting to validate the DRM license, the memory device determines if a new time stamp is needed based on the TUP associated with the DRM license. If a new time stamp is needed, the memory device receives the new time stamp and then attempts to validate the DRM license using a time estimate based on the new time stamp. Other embodiments are disclosed, and each of the embodiments can be used alone or together in combination.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is related to “Method for Improving Accuracy of a TimeEstimate,” U.S. patent application Ser. No. ______ (attorney docketnumber 10519-207); “Memory Device with Circuitry for Improving Accuracyof a Time Estimate,” U.S. patent application Ser. No. ______ (attorneydocket number 10519-215); “Method for Improving Accuracy of a TimeEstimate Used to Authenticate an Entity to a Memory Device,” U.S. patentapplication Ser. No. ______ (attorney docket number 10519-216); “MemoryDevice with Circuitry for Improving Accuracy of a Time Estimate Used toAuthenticate an Entity,” U.S. patent application Ser. No. ______(attorney docket number 10519-217); “Memory Device with Circuitry forImproving Accuracy of a Time Estimate Used in Digital Rights Management(DRM) License Validation,” U.S. patent application Ser. No. ______(attorney docket number 10519-219); “Method for Using Time from aTrusted Host Device,” U.S. patent application Ser. No. ______ (attorneydocket number 10519-220); and “Memory Device Using Time from a TrustHost Device,” U.S. patent application Ser. No. ______ (attorney docketnumber 10519-221); each of which is being filed herewith and is herebyincorporated by reference.

BACKGROUND

Some memory devices, such as TrustedFlash™ memory devices from SanDiskCorporation, need to know the time in order to perform time-basedoperations, such as digital rights management (DRM) license validation.Because of the security issues involved in such operations, the memorydevice may not be able to trust a host device to provide the correcttime. While the memory device may be able to obtain the correct timefrom a trusted component in a network, the host device hosting thememory device may not be connected to the network at the time the memorydevice needs to know the time. The memory device can be designed tomeasure its active time, but a time estimate generated from measuredactive time will not be a true measure of the actual time if the memorydevice does not continuously measure active time (e.g., if the memorydevice was powered down after the measurement started). Accordingly, atime estimate generated from the measured active time really onlyindicates a lower limit of what the actual time could be, and such atime estimate may not provide the accuracy that is desired in certaintime-based operations. While a memory device can be equipped with abattery-backed-up clock to continuously keep track of time even when thememory device is inactive, such a clock may add cost to the memorydevice.

SUMMARY

The present invention is defined by the claims, and nothing in thissection should be taken as a limitation on those claims.

By way of introduction, the embodiments described below provide a methodfor improving accuracy of a time estimate used in digital rightsmanagement (DRM) license validation. In one embodiment, a memory devicereceives a request to validate a DRM license stored on the memorydevice, wherein the DRM license is associated with a time stamp updatepolicy (TUP) that specifies when a new time stamp is needed. Beforeattempting to validate the DRM license, the memory device determines ifa new time stamp is needed based on the TUP associated with the DRMlicense. If a new time stamp is needed, the memory device receives thenew time stamp and then attempts to validate the DRM license using atime estimate based on the new time stamp. In another embodiment, amemory device receives a request to validate one of a plurality of DRMlicenses stored on the memory device, wherein each DRM license isassociated with a different TUP that specifies when a new time stamp isneeded. Before attempting to validate the one of the plurality of DRMlicenses, the memory device determines if a new time stamp is neededbased on a TUP associated with the one of the plurality of DRM licenses.If a new time stamp is needed, the memory device receives the new timestamp and then attempts to validate the one of the plurality of DRMlicenses using a time estimate based on the new time stamp. Otherembodiments are disclosed, and each of the embodiments can be used aloneor together in combination.

The embodiments will now be described with reference to the attacheddrawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an illustration of a system of an embodiment.

FIG. 2 is a block diagram of a memory device of an embodiment.

FIG. 3 is an illustration of various functional modules in the memorydevice of FIG. 2.

FIG. 4 is a protocol diagram of an asymmetric authentication process ofan embodiment.

FIG. 5 is a system diagram of an embodiment for obtaining a time stamp.

FIG. 6 is a flow chart of a method of an embodiment for obtaining a timestamp.

FIG. 7 is a flow chart of a method of an embodiment for checking a timestamp update policy.

FIG. 8 is an illustration of a memory device of an embodiment that useshost time for an application running in the memory device.

DETAILED DESCRIPTION OF THE PRESENTLY PREFERRED EMBODIMENTS

Turning now to the drawings, FIG. 1 is an illustration of a system 10that will be used to illustrate these embodiments. As shown in FIG. 1,the system 10 comprises a plurality of memory devices 20, 30, 40removably connected with a respective plurality of host devices: apersonal computer (PC) 50, a digital media (e.g., MP3) player 60, andcell phone 70. A host device is a device that can read data from and/orwrite data to a memory device. Data can include, but is not limited to,digital media content, such as an audio file or a video file (with orwithout audio), an image, a game, a book, a map, a data file, or asoftware program. Data can be downloaded onto a memory device from aserver in a network, pre-loaded by a manufacturer or other third party,or side-loaded from another device, for example.

A host device can take any suitable form and is not limited to theexamples shown in FIG. 1. For example, a host device can take the formof a notebook computer, a handheld computer, a handheld email/textmessage device, a handheld game console, a video player (e.g., a DVDplayer or a portable video player), an audio and/or video recorder, adigital camera, a set-top box, a display device (e.g., a television), aprinter, a car stereo, and a navigation system. Also, a host device cancontain mixed functionality. For example, a host device can be a cellphone that, in addition to being able to make and receive telephonecalls, is also able to play digital media (e.g., music and/or video)files.

A host device, like the PC 50 and cell phone 70, can have the capabilityof communicatively connecting to a network (such as the Internet 80 or awireless network 90, although other types of networks can be used). Ahost device with such capability will be referred to herein as a“connected device.” It should be understood that a “connected device”may not always actually be connected to a network, such as when the cellphone 70 is operating in an unconnected mode or when the PC 50 does notestablish an Internet connection. A host device that, by itself, doesnot have the capability of communicatively connecting to a network (suchas the digital media player 60) will be referred to herein as an“unconnected device.” An unconnected device can be placed incommunication with a network by connecting the unconnected device with aconnected device, as shown in FIG. 1, where the digital media player 60is connected to the PC 50. Even if connected in such a way, anunconnected device may not be able to pull information from the networkif the unconnected device is not designed for such functionality (e.g.,a simple MP3 player). In such a situation, a component in the networkcan push information to the device. It should be noted that while FIG. 1shows the digital media player 60 being connected to the PC 50 via awired connection, a wireless connection can be used. Similarly, theterms “connected” and “coupled” do not necessarily denote a wiredconnection or a direct connection.

The network (e.g., the Internet 80 or the wireless network 90) can allowa connected device (or an unconnected device connected to a connecteddevice) to access external components, such as, but not limited to, atime server 100, which can provide a time stamp, and a digital rightsmanagement server (DRM) 110, which can provide DRM-protected content andlicenses for accessing such content. Both of these servers will bedescribed in more detail below. While the time server 100 and the DRMserver 110 are shown as separate devices in FIG. 1, these two serverscan be combined into a single device. Further, these servers can containother functionality. Also, components other than the time server 100 andDRM server 110 can be accessed via the Internet 80 and wireless network90, if desired.

Turning again to the drawings, FIG. 2 is a block diagram of a memorydevice 200 of an embodiment, which can take the form of a memory card orstick. As shown in FIG. 2, the memory device 200 comprises anon-volatile memory array (such as flash memory) 210 and a collection ofcircuitry 220. In this embodiment, the non-volatile memory array 210takes the form of a solid-state memory, in particular, flash memory 210.It should be noted that, instead of flash, other types of solid-statememories can be used. It should also be noted that memories other thansolid-state memories can be used, such as, but not limited to, magneticdiscs and optical CDs. Also, for simplicity, the term “circuitry” willbe used herein to refer to a pure hardware implementation and/or acombined hardware/software (or firmware) implementation. Accordingly,“circuitry” can take the form of one or more of an application specificintegrated circuit (ASIC), a programmable logic controller, an embeddedmicrocontroller, and a single-board computer, as well as a processor anda computer-readable medium that stores computer-readable program code(e.g., software or firmware) executable by the processor.

The collection of circuitry 210 in FIG. 2 contains a plurality ofcomponents: a host interface module (HIM) 230, a flash interface module(FIM) 240, a buffer management unit (BMU) 250, a CPU 260, and a hardwaretimer block 270. The HIM 230 provides interface functionality for thehost device 300, and the FIM 240 provides interface functionality forthe flash memory 210. The BMU 250 comprises a crypto-engine 252 forproviding encryption/decryption functionality and a host direct memoryaccess (DMA) component 254 and a flash DMA component 256 forcommunicating with the HIM 230 and FIM 240, respectively. The CPU 260executes software and firmware stored in the CPU RAMS 260 and/or theflash memory 210. The hardware timer block 270 will be described belowin conjunction with the memory device's ability to measure time.

Other components of the memory device 200, such as the electrical andphysical connectors for removably connecting the memory device 200 to ahost device 300, are not shown in FIG. 2 to simplify the drawing. Moreinformation concerning the memory device 200 and its operation can befound in U.S. patent application Ser. Nos. 11/314,411 and 11/557,028,both of which are hereby incorporated by reference. Additionalinformation can be found in U.S. patent application Ser. No. 11/322,812and U.S. patent application Ser. No. 11/322,726, both of which arehereby incorporated by reference. The components and functionalitydescribed in those documents should not be read into the followingclaims unless explicitly recited therein.

In this embodiment, the memory device 200 stores digital rightsmanagement (DRM) keys and licenses to unlock protected content stored onthe memory device 200. (It should be noted that these embodiments canalso be used with memory devices that do not store DRM keys and licensesto unlock protected content stored on the memory device.) The DRM keysand licenses can be generated by the memory device 200 or generatedoutside of the memory device 200 (e.g., by the DRM server 110) and sentto the memory device 200. Since the DRM keys and licenses move alongwith the memory device 200, the protected content is effectively tied tothe memory device 200 instead of the host device 300, thereby making theprotected content portable and accessible by any host device that canprove to the memory device 200 that it is an authorized device.TrustedFlash™ memory devices from SanDisk Corporation are examples ofmemory devices that store DRM keys and licenses on the memory device, sothat protected content is movable with the memory device. In someembodiments, the memory device 200 also validates a DRM license with theDRM keys stored on the memory device 200, while, in other embodiments,the memory device 200 provides the DRM keys to the host device 300 forit to validate the DRM license with the DRM keys.

In this embodiment, the CPU 260 of the memory device 200 executes aSecure Storage Application (SSA) to ensure that only authenticatedentities with proper credentials can access the DRM keys and licenses.The computer-readable code for the SSA can be stored in the flash memory210, the CPU RAMs 262, or another storage location in the memory device200. The SSA is described in more detail in the '028 patent applicationreferenced above. FIG. 3 is an illustration of various functionalmodules in the memory device 200 that will be used to illustrate theoperation of the SSA. As shown in FIG. 3, the memory device 200comprises various access control records (“ACRs”): a first asymmetricACR 201, a second asymmetric ACR 202, and a symmetric ACR 203. The firstand second asymmetric ACRs 201, 202 comprise first and second timeupdate policies (TUP1 and TUP2, respectively), which will be describedin more detail below. Although multiple ACRs are shown in FIG. 3, thememory device 200 can contain just a single ACR.

Each ACR 201, 202, and 203 specifies the authentication method to beused and what kind of credentials are needed to provide proof of theentity's identity. Each ACR 201, 202, and 203 also contains permissionsto perform various actions, such as accessing the DRM keys and licenses.Once an ACR has successfully authenticated an entity, the SSA systemopens a session through which any of the ACR's actions can be executed.As used herein, the term “entity” refers to any person or thingattempting to access the memory device 200. An entity can be, forexample, an application running on a host device, the host deviceitself, or a human user. In FIG. 3, three entities are attempting toaccess the memory device 200: a media (e.g., audio and/or video) player301, a storage application 302, and another application 303. Theseentities 301, 302, 303 can be on the same or different host devices.Each entity 301, 302, 303 is associated with a particular ACR (ACRs 201,202, and 203, respectively). Additional entities (not shown) can also beassociated with one or more of the ACRs 201, 202, and 203.

When an entity initiates a login process, it sends a request forauthentication that include an identifier of its associated ACR, whichspecifies the authentication method to be used and what kind ofcredentials are needed to provide proof of the entity's identity. InFIG. 3, ACRs 201 and 202 specify an asymmetric authentication method,while ACR 203 specifies a symmetric authentication method. It should benoted that other authentication methods (such as password-basedprocedures) can be used and that an ACR can also specify that noauthentication is required. In addition to specifying a particularauthentication method, an ACR can also contain a permissions controlrecord (PCR) that describes the actions an entity can perform onceauthenticated.

Some authentication mechanisms (such as, for example, one-way andtwo-way asymmetric authentication using an X.509 certificate chain forauthentication) can be time-based, requiring the memory device 200 toknow the time in order to verify the credentials presented by theentity. (The symmetric authentication mechanism used by the symmetricACR 203 does not require the memory device 200 to know the time. Insymmetric authentication, a key that is shared by an entity and itsassociated ACR is used to authenticate the entity.) In asymmetricauthentication, time may be needed to evaluate whether credentials, suchas an RSA certificate and/or a certificate revocation list (CRL),supplied by an entity are valid. (As used herein, a “certificate” canrefer to a single certificate or a plurality of certificates (e.g., achain of certificate), and a “CRL” can refer to a single CRL or aplurality of CRLs.) Before turning to the mechanisms that the memorydevice 200 can use to generate a time estimate to perform suchvalidation, a brief discussion of certificates and CRLs will bepresented with respect to asymmetric authentication.

Asymmetric authentication uses a public key infrastructure (PKI) system,in which a trusted authority known as a certificate authority (CA)issues RSA certificates for proving the identity of entities. Entitieswho wish to establish proof of identity register with the CA withadequate evidence for proving their identity. After the identity of theentity has been proven to the CA, the CA issues a certificate to theentity. The certificate typically includes the name of the CA thatissued the certificate, the name of the entity to whom the certificateis issued, a public key of the entity, and the public key of the entitysigned (typically by encrypting a digest of the public key) by a privatekey of the CA.

A certificate can contain a data field that holds an expiration date. Insuch a situation, the entity holding the certificate can only accesscontent protected by an ACR for a limited amount of time (until thecertificate expires). A certificate can also contain a data field thatholds a future validity time. In this situation, the ACR will notauthenticate the entity until the certificate becomes valid. If thememory device 200 determines that the current date is after theexpiration date or before the validation date (i.e., if the memorydevice 200 determines that the certificate is not valid), the memorydevice 200 will not authenticate the entity presenting the certificate.

Various circumstances (such as, for example, change of name, change ofassociation between the entity and the CA, and compromise or suspectedcompromise of the private key) may cause a certificate to become invalidprior to its expiration date. Under such circumstances, the CA needs torevoke the certificate. In operation, the CA periodically issues acertificate revocation list (CRL), which is a signed data structure thatcontains a time-stamped list of revoked certificates. Accordingly, toauthenticate an entity, the memory device 200 not only checks to seewhether the certificate is timely but also checks the CRL to see whetherthe certificate is listed on the CRL. (The CRL can be provided by theentity along with the certificate, or the memory device 200 can obtainthe CRL itself (e.g., through the Internet 80, if the memory device 200is a connected device).) If the certificate is listed on the CRL, thecertificate is no longer valid (even if it has not expired), and theentity will not be authenticated. Like a certificate, a CRL is issuedwith an expiration date, which indicates when the CRL should be updated.This ensures that the memory device 200 is using the latest CRL. Duringauthentication, if the memory device 200 finds that the current time ispast the CRL's expiration date (i.e., if the memory device 200determines that the CRL is not valid), the CRL is deemed defective andis preferably not used for certificate verification.

As discussed above, in this embodiment, the memory device 200 needs toknow the time in order to verify the credentials (here, a certificateand a CRL). There are several options for allowing a memory device toknow what time it is. One option is to have a memory device request, viaa host device, a time stamp from a trusted time server every time thememory device needs to know the time. This solution is suitable forconnected devices; however, since a memory device can be used in bothconnected devices as well as unconnected devices (e.g., home PCs thatare not connected to the Internet, MP3 players, cell phones that are offthe network (e.g., when on an airplane)), the memory device cannot relyon connectivity being available when it needs to know the time for anauthentication procedure. Another option is to equip the memory devicewith a battery-backed-up clock. However, this may be undesired, as itwould add cost to the memory device. Yet another option is to rely uponthe host device to provide time (from its own internal clock or from anexternal source) to the memory device. However, in many situations, thememory device cannot trust the host device to provide accurate time. Ifa user is allowed to “back date” the clock on the host device (i.e.,setting the clock on the host device to an earlier time than the currenttime), the user would be able to circumvent the very time restrictionsthat the memory device needs to enforce. On the other hand, if thememory device (on an application running in the memory device) can trustthe host device, the memory device (or the application running in thememory device) would be able to rely upon the host device for the time.More information when host time can be used is presented below.

Another option, which is used in this embodiment, is to use the limitedtime tracking capabilities of a memory device; specifically, the memorydevice's 200 ability to measure its active time. Active time can referto the amount of time that the memory device 200 was connected to a hostdevice and actually used (i.e., when there is activity on the busbetween the memory device 200 and host device 300, as compared to beingidle or in a sleep mode). Alternatively, active time can refer to theentire amount of time that the memory device 200 was connected to andreceived power from the host device 300. The terms “active time” and“usage time” will be used interchangeably herein. As described below, inthis embodiment, the memory device 200 is active when the hardware timerblock 270 can generate clock ticks as interrupts to the CPU 260, and theCPU 260 can increment the active time counter.

In operation, the hardware timer block 270 (e.g., an ASIC controller)contains an oscillator that generates periodic clock ticks and providessuch ticks to the CPU 260 as interrupts. (Preferably, the oscillatoroperates at a very low frequency and runs while the CPU 260 is asleep.)Accordingly, the hardware timer block 270 interrupts the CPU 260 on aperiodic basis (e.g., every millisecond or microsecond). When the CPU260 gets the interrupt, a special clock interrupt service routine (e.g.,in firmware run by the CPU 260) is invoked and adds one period/unit toan active time counter, which is stored in the CPU RAMS 262 and also inthe non-volatile, flash memory 210, so the counter value won't be lostif there is a power loss. To avoid excessive wear to the memory 210, itis preferred that the active time counter in the memory 210 be updatedperiodically (e.g., every minute or so, as long as the memory device 200is powered on) instead of in response to every clock tick. Although thiscan lead to additional inaccuracies in the measured time if power lossoccurs before the active time counter is updated, this sacrifice mightbe deemed acceptable in view of the benefits to memory endurance. (Tofurther protect memory endurance, the value stored to the active timecounter can include a field indicating how many times the counter hasbeen written to. If the write value exceeds a certain amount, thecounter can be stored in another location in memory. The bits within thecounter can also be shifted, if that helps endurance.) It is alsopreferred that writing to the active time counter not affect performance(aside from power consumption to perform the write) and regular activityof the memory device 200. (In other words, it is preferred that writingto the time counter be part of the process of servicing a host command.)For example, the writing to the active time counter can be treated as abackground task and performed before servicing a host device command. Atthe end of the host device command, firmware in the memory device 200can verify that programming of the active time counter succeeded byreading the data out of the memory and comparing it to the desiredvalue.

Also, it is preferred that the value of the active time counter bestored in the memory 210 securely (e.g., signed via the crypto-engine252 using a key-hashed message authentication code (HMAC)), so it cannotbe easily tampered with. In case of a signature mismatch, the data canbe treated as un-initialized, as if an attacker tampered with it.Further, it should be noted that other mechanisms for measuring activetime can be used.

To convert the stored value in the active time counter into real time,the CPU 260 multiplies the stored value by the frequency in which thehardware timer block 270 generates clock ticks. For example, if thevalue 500 were stored in the active time counter and the hardware timerblock 270 generates a clock tick every 5 milliseconds, the CPU 260 wouldcalculate an active time of 2,500 milliseconds (500 times 5). Togenerate a time estimate, the translated active time is added to thelast time stamp received by the memory device 200 from a trusted source.In other words, a time stamp acts as a “start line,” with the memorydevice's measured active time being added to the time stamp. A timestamp can take any form and indicate time to any desired degree ofprecision (e.g., year, month, day, hour, minute, second, etc.).Preferably, the memory device 200 is provided with a time stamp from anentity that the memory device 200 trusts to give it accurate time (e.g.,the time server 100 or a trusted host device). A time stamp can take anyform and be sent by itself or included in other information. The memorydevice preferably stores the time stamp securely, via the crypto-engine252, so it cannot be easily tampered with. When a new time stamp isreceived by the memory device 200, the new time stamp is stored in thememory device 200, and the active time counter is reset. Thus, activetime will thereafter be measured with respect to the new time stampinstead of the old time stamp. Instead of resetting (and, therefore,“rolling back”) the counter, the active time counter value that existsat the time of the new time stamp can be recorded and subtracted fromthe current time in order to measure the active time.

Now that the memory device's time-tracking capabilities have beendiscussed, an example of an authentication procedure will be described.Turning again to the drawings, FIG. 4 is a protocol diagram of anasymmetric authentication process of an embodiment. In the followingexample, the player 301 is attempting to login to the memory device 200via ACR 201. As described in more detail below, the player 301 containscredentials (e.g., an RSA key pair, certificate, and certificaterevocation list (CRL)), and the ACR 201 is responsible for validatingthe authenticity of the player 301 and granting rights to objects (inthis case, establishing a secure channel between the player 301 and theDRM module 207). As shown in FIG. 4, the first step is for the hostdevice 300 to send to the memory device 200 a request for authenticationof the player 301 (act 402). If a time stamp has not yet been installedin the memory device 200, the memory device 200 responds to theauthentication request with a login failed message (act 404).

The next series of acts describe the process of providing a time stampto the memory device 200 and will be described in conjunction with FIGS.5 and 6, which are a system diagram and a flowchart, respectively, thatillustrate one particular way in which the memory device 200 can obtaina time stamp. It should be understood that the memory device 200 canobtain a time stamp in a different manner and that the time stamp cantake different forms. It should also be understood that a single memorydevice interfacing with multiple servers or hosts may handle multipleforms simultaneously. Accordingly, the specifics of this example shouldnot be read into the claims unless explicitly recited therein.

As shown in FIG. 5, the memory device 200 is in communication with thehost device 300 via a memory device—host device communication channel305, and the host device 300 is in communication with the time server100 via a host device—time server communication channel 315. Althoughthe time server 100 can comprise a single server, in this embodiment,the time server 100 comprises a plurality of servers 102, 104, 106synced with each other via an inter-server communication channel 325.Also, as noted above, instead of using the time server 100 for a timestamp, a time stamp from the host device 300 can be used, preferablyonly if it is a trusted host device.

In this embodiment, the procedure for requesting a time stamp isinitiated by the host device 300, which sends a get nonce command to thememory device 200 (act 405) (see FIGS. 4, 5, and 6). In this embodiment,a nonce is a 160-bit random number used by the memory device 200 tolater verify the authenticity of the time stamp generated by the timeserver 100. The memory device 200 generates a random number (nonce) (act410) and stores it in the CPU RAMS (i.e., volatile memory) 262 (or,alternatively, the memory 210) for a later verification step. The memorydevice 200 then sends the nonce to the host device 300 (act 415). Thememory device 200 also starts to measure time (as described below) tolater determine whether a time-out has occurred.

When the host device 300 receives the nonce, it sends a get time stamprequest containing the nonce to the time server 100 (act 420). The timeserver 100 signs the time (e.g., world time in UTC Zulu format) andnonce with its private key. The time server 100 then sends a time stampresponse, which, in this embodiment, comprises the nonce, the timestamp, a certificate chain, and a CRL chain, to the host device 300 (act425). (It should be noted that this certificate and CRL are sent fromthe time server 100 to authenticate it and are not the same as thecertificate and CRL sent to authenticate the player 301.) The hostdevice 300 then sends a time update command with this response to thememory device 200 (act 430). In response to that command, the memorydevice 200 attempts to verify the certificate and CRLs (act 435).(Again, the certificate and CRL are different from the ones sent toauthenticate the player 301.) As discussed below, it may be preferred toassume that the validity period for the time server's 100 certificateand CRL is valid instead of checking their validity against a timeestimate generated by the memory device 200. If the verification fails,the memory device 200 resets the volatile memory 262 and returns to anidle process (act 440). If the verification of the certificate and CRLpass (act 445), the memory device 200 compares the nonce in the responsewith the nonce in the volatile memory 262 (act 450). If the comparisonfails, the memory device resets the volatile memory 262 and returns toan idle process (act 455). If the comparison succeeds, the memory device200 stores the new time stamp in the memory 210, preferably in a securemanner to protect against tampering.

It should be noted that, after the memory device 200 generates the nonce410 and is waiting for a response (act 460), it is possible that thehost device 300 can send the memory device 200 another get nonce command(act 465). As mentioned above, the memory device 200 starts to measuretime after the nonce is generated. If the new nonce command (465) isreceived before the measured time reaches a certain time-out limit, thememory device 200 preferably ignores the new nonce command (465).However, if the new nonce command (465) is received after the time-outlimit, the memory device 200 will reset the volatile memory 262 andgenerate a new nonce (act 470). Accordingly, the nonce is only valid fora limited time, and the time-out limit (the “travel time error”) is themaximum time that the memory device 200 considers legitimate to wait fora time stamp from the time server 100.

Because the time stamp stored in the memory device 200 contains the timethat the time server 100 signed the data string, the time indicated inthe time stamp may not be the actual, real world time that the hostdevice 300 requested the time stamp or the actual, real world time thatthe memory device 200 stored the time stamp, depending on the degree ofprecision of the time stamp (e.g., year, month, day, hour, minute,second, etc.) and the delays involved in sending the request andreceiving the response. The nonce time-out period discussed above can beset to such a time to ensure that the time stamp will have the degree ofprecision required by the memory device 200. Accordingly, the memorydevice 200 has control over the maximum acceptable delay in a time stamprequest. Also, in alternate embodiments, the time stamp generated by thetime server 100 can indicate some other time, such as an estimated timethat the host device 300 requested the time stamp, the expected time thetime stamp will be stored in the memory device 200, or some other time.

The above protocol allows the memory device 200 to communicate with thetime server 100 over an unsecured connectivity system (e.g., theInternet, a WiFi network, a GSM network, etc.). The connectivity systemis unsecured in the sense that the memory device 200 cannot assume thatthe time stamp sent by the time server 100 will not be tampered withduring transmission. Since the network cannot be relied upon to protectthe time stamp, the above protection mechanism (or some other protectionmechanism) can be used between the time server 100 and the memory device200. The encryption protocol is such that, if the time stamp is tamperedwith, the memory device 200 can detect it. In other words, because theconnectivity system is not secure, the system itself cannot preventpeople from changing the bits in the time stamp; however, the memorydevice 200 can detect the tampering and reject the time stamp. In analternate embodiment, a secured communication system is used (i.e., thedata communication lines are protected), and the time stamp can simplybe sent as plain text since no one can tamper with the time stamp.

Returning to FIG. 4, with the new time stamp now stored in the memorydevice 200, the memory device 200 sends a “time update success” messageback to the host device 300 (act 452), and the host device 300 onceagain sends a request for authentication to the memory device 200 (act454). Since the memory device 200 has a time stamp, the memory device200 will check the time stamp update policy (TUP) of the ACR 201 (act500). Because a time estimate is based on a time stamp, basing a timeestimate on an obsolete time stamp can lead to an inaccurate timeestimate. Accordingly, a TUP is used to determine when an existing timestamp on the memory device 200 is considered obsolete and requiresrenewal (i.e., a new time stamp). As shown in FIG. 3 and as discussed inmore detail below, different ACRs can have different TUPs (i.e.,different ACRs can have different time tolerance levels), which can beestablished when an ACR is created.

In this embodiment, the TUP is represented by four values: (1) athreshold number of power cycles, (2) a threshold value of active time,(3) a threshold value of “stretched” active time, and (4) a bitindicating whether or not there is an OR relationship among theparameters (i.e., whether a time update will be required if only asingle parameter fails, or whether a time update will be required onlyif all of the parameters fail). Each of these parameters will bedescribed in detail below. (It should be noted that other parameters inaddition to or instead of these can be considered.)

FIG. 7 is a flow chart showing more detail of the check TUP act (act500). First, a check is made to determine whether the memory device 200has been initialized to check a TUP, e.g., by looking at configurationdata stored in the memory 210 (act 505). If the memory device 200 hasnot been initialized to check a TUP, the memory device 200 uses the lasttime stamp received by the memory device 200 to generate a time estimate(act 510), and an attempt is made to authenticate the entity using thattime estimate. If the memory device 200 has been initialized to check aTUP, the memory device 200 begins that check.

First, the memory device 200 determines if the TUP includes a check ofthe number of power cycles of the memory device 200 since the last timestamp (act 515). In this embodiment, this is done by checking the “powercycles” value mentioned above. If the “power cycles” value is zero, thenumber of power cycles is not checked. If the “power cycles” value isother than zero, the number of power cycles is checked using that valueas the threshold. The number of power cycles is a count of how manytimes the memory device 200 was powered up, which indicates how manytimes the memory device 200 was powered down since the last time stamp(i.e., for every power up, there must have been a power down). Thenumber of power cycles can be measured by the CPU 260. Every time thememory device 200 goes through a power cycle, the CPU 260 can invoke adevice reset routine in firmware. As in the situation where the CPU 260adds one unit to an active time counter, with the device reset routine,the CPU 260 would add one unit to a power cycle counter in the CPU RAMS262 and/or memory 210. As with the active time counter, the power cyclecounter can be updated periodically to reduce memory wear.

When the memory device 200 is powered down, there is at least someactual time that is not represented by the measured active time (becausethe memory device 200 cannot measure its active time when it is not“active”). Because the memory device 200 does not know how much timepassed between power cycles, the number of power cycles does notindicate how inaccurate the measured active time is. However, it doesprovide a sense of whether the memory device 100 is being used outsideof an expected usage pattern, which can roughly indicate how inaccuratethe measured active time might be. For example, a time estimate madewhen the memory device 200 had ten power cycles since the last timestamp may be less accurate than a time estimate made when the memorydevice 200 had only a single power cycle since the last time stamp.

If the TUP includes a check of the number of power cycles, the memorydevice 200 checks the number of power cycles of the memory device 200since the last time stamp to see if the number exceeds the thresholdamount set in the “power cycles” value (act 520). The threshold numberis configurable per ACR to reflect a desired time tolerance. Forexample, if the authentication is very sensitive and an assurance isneeded that the expiration date of the certificate or CRL has notpassed, the threshold number can be set to one. Accordingly, if thememory device 200 were shut down even once (and, hence, there is atleast some amount of time that cannot be accounted for by the measuredactive time), the TUP check of this parameter would fail. If, on theother hand, authentication is not that sensitive, the number of powercycles can be set to a higher number (or not even considered at all) toallow the TUP check to pass even if there were some number of powercycles (and, accordingly, some amount of time that is not accounted forby the measured active time).

If the check of the number of power cycles fails and it is determinedthat there is an OR relationship among the TUP parameters (act 525), theTUP check fails (act 530). The memory device 200 sends a message to thehost device 300 indicating the failure, and the above-describedprocedure is used to obtain a new time stamp. If the check of the numberof power cycles passes, or if it fails and it is determined that thereis not an OR relationship among the TUP parameters (act 525), theprocess continues by determining if the TUP includes a check of activetime since the last time stamp (act 535).

Similar to the power cycles procedure described above, if the “activetime” value is zero, active time is not checked. However, if the “activetime” value is other than zero, the active time is checked using thatvalue as the threshold number of seconds (or some other unit of time).As with the number of power cycles, the threshold active time amount isconfigurable per ACR to reflect a desired time tolerance. In general,the longer the memory device 200 is active, the more inaccurate themeasured active time will likely be. Accordingly, if authentication isvery sensitive and an assurance is needed that the expiration date ofthe certificate or CRL has not passed, the threshold amount of measuredactive time can be set very low. Conversely, if authentication is notthat sensitive, the threshold amount of measured active time can be sethigher (or not even considered at all).

If the check of active time fails and it is determined that there is anOR relationship among the TUP parameters (act 545), the TUP check fails(act 550). The memory device 200 sends a message to the host device 300indicating the failure, and the above-described procedure is used toobtain a new time stamp. If the check of active time passes, or if itfails and it is determined that there is not an OR relationship amongthe TUP parameters (act 545), the process continues by determining ifthe TUP includes a check of “stretched” active time (act 555).

As noted above, the measured active time may not be a true measure ofthe actual active time if the memory device 200 does not continuouslymeasure active time. That is, if the memory device 200 is “inactive”(e.g., when the memory device 200 is idle or in sleep mode, or when thememory device 200 is powered-down or when the memory device 200 isremoved from the host device 300—in this embodiment, whatever eventcauses the hardware timer block 270 to stop generating clock ticksand/or causes the CPU 260 to stop reacting to such ticks), the measuredactive time will be less than the actual time that passed since themeasurement started because there is nothing in the memory device 200 totell it that time is passing when it is inactive. For example, let's saythat a time stamp was received on January 1^(st), and the memory device200 measured an active time of two days. (For simplicity, time ismeasured in units of days in this example. However, as mentioned above,any desired unit of time can be used.) Accordingly, a time estimategenerated by the memory device 200 at this point would indicate that thedate is January 3^(rd) (i.e., by adding the active time of two days tothe last time stamp of January 1^(st)). If the memory device 200continuously measured active time, this time estimate would accuratelyrepresent the actual time (assuming the hardware timer block 270 and CPU260 are functioning accurately). However, if the memory device 200 didnot continuously measure active time (i.e., if the memory device 200 wasinactive at any point after it started measuring the active time), thetime estimate would not accurately represent the actual time. At best,the time estimate would indicate that the actual time was at leastJanuary 3^(rd). The actual time could be January 4^(th) or some latertime (June 29^(th), November 2^(nd), December 5^(th), the next year,etc.). Accordingly, the check of the active time in act 540 may not givean accurate result.

To address this issue, the TUP can include a check of “stretched” activetime (acts 555 and 560). “Stretched” active time is the result ofadjusting the measured active time based on a determined accuracy ofpreviously-measured active time. So, if the memory device 200 measuresthree days of active time and knows that, the last time(s) it measuredactive time, it produced a value that was 50% of the actual time, thememory device 200 can adjust (or “stretch”) the measured active time ofthree days by a factor of two (because the measured active time was 50%of the actual time) to yield six days. Additional information about“stretching” active time is described in “Method for Improving Accuracyof a Time Estimate from a Memory Device,” U.S. patent application Ser.No. ______ (attorney docket number 10519-207), and “Memory Device withCircuitry for Improving Accuracy of a Time Estimate,” U.S. patentapplication Ser. No. ______ (attorney docket number 10519-215), both ofwhich are being filed herewith and are hereby incorporated by reference.

Instead of using “stretched” active time, “stretched” down time can beused. Down time refers to the amount of time that the memory device 200was inactive between time stamps. Since there is no way of measuring howlong the memory device 200 was not active, down time is a calculatednumber; specifically, down time=actual time between time stamps—activetime. “Stretched” down time is the down time calculation adjusted basedon a determined accuracy of previously-measured active time (or downtime, which is based on measured active time). The following is a listof examples of other down-time variations that can be considered. Inthis list “DownTime” refers to “stretched” down time (e.g., an averageof down times between time stamps of previous knowledge).

Total Downtime estimation (teDownTime):teDownTime=(timestamp_(i)−timestamp_(i-1)−ActiveTime_(i)), where theindex i is going from the second time stamp to the last time stampconfigured in the memory device 200.

Current DownTime (cDowntime) since the last time stamp for a specificmoment. This can be calculated relative to the number of Power Cycles(PC) since the last time stamp update (cDowntime=PC since lasttimestamp*(teDownTime/PC)) or relative to the active time since the lasttime stamp update (cDowntime=ActiveTime since lasttimestamp*(teDownTime/ActiveTime))

If the DownTime parameter is configured not be used, the DownTime valueis set to 0.

If DownTime parameter is configured to be used, the DownTime is setto 1. The memory device 200 would uses the DownTime property to evaluatewhen a time stamp update is needed in the following way: whenServiceTime (e.g., a certificate's validity or a CRL's validity)−timeestimate<DownTime, a time stamp update is needed.

Returning to FIG. 7, if the check of “stretched” active time fails (act560), the check of the TUP fails (act 565), and the memory device 200sends a message to the host device 300. The above-described procedure isthen used to obtain a new time stamp. If the check of “stretched” activetime passes (or if the memory device 200 is not initialized to check theTUP), the memory device 200 sends a “TUP Passes” message 510, 570 backto the host device 300 (see FIG. 4). The host device 300 then sends theentity's certificate and CRL to the memory device 200, and the memorydevice attempts to authenticate the entity (act 585). Specifically, thememory device 200 will generate a time estimate based on the lastreceived time stamp and the measured active time to verify thecertificate (act 585) and verify the CRL (act 590). If the expirationtimes of the certificate and the CRL are after the generated timeestimate, the memory device 200 sends an OK message back to the hostdevice 300, and other steps, if any, in the authentication method can beperformed. If the entity is authenticated, ACR 201 grants the entityrights to objects (here, by establishing a secure channel between theplayer 301 and the DRM module 207). Otherwise, if the certificate and/orCRL have expired, the memory device 200 can send a message to the hostdevice 300 stating that the authentication attempt has failed. The hostdevice 300 can, in turn, initiate a time stamp update, as describedabove.

As mentioned above, the time estimate for the authentication attempt isgenerated by adding the measured active time to the last time stamp.Since the measured active time may be inaccurate, the “time stretching”techniques discussed above can be used to improve the accuracy of thetime estimate. However, it is possible that “stretched” active time mayactually be greater than the actual time. In the case of checking theTUP, such “over-stretched” active time would result in a new time stamp.However, in the case of verifying a certificate or a CRL,“over-stretched” active time can prevent an otherwise proper entity frombeing authenticated. Accordingly, it may be desired not to use “timestretching” when generating a time estimate for authentication.

In summary, with the above method, the memory device 200 receives arequest to authenticate an entity and, before attempting to authenticatethe entity, the memory device 200 determines if a new time stamp isneeded. If a new time stamp is needed, the memory device 200 obtains thenew time stamp and then attempts to authenticate the entity bygenerating a time estimate based on the new time stamp and comparing thetime estimate to the certificate and/or CRL validity periods. If a newtime stamp is not needed, the memory device attempts to authenticate theentity by generating a time estimate based on the last time stamp andcomparing the time estimate to the certificate and/or CRL validityperiods.

It should be noted that, in this embodiment, the TUP is checked and, ifneeded, a new time stamp is obtained before the entity is authenticated.In other words, checking the TUP and obtaining a new time stamp does notrequire the entity to be authenticated before the TUP is checked orbefore the new time stamp is obtained. This is in contrast to systemsthat use a single server to provide both a time stamp and a DRM license.Such a server would need to authenticate to the memory device beforeproviding the memory device with a time stamp (or other information).This presents a “Catch 22” situation—to authenticate the server, a freshtime may be needed, but a fresh time stamp can only be obtained afterthe server has been authenticated. To avoid such a situation, some priorsystems simply do not use time in the authentication process. Whileavoiding the above “Catch 22” situation, ignoring time can lead toauthenticating entities who should not be authenticated (e.g., becausetheir certificate and/or CRL has expired).

By separating the time server 100 from the entity attempting toauthenticate to the memory device 200, the memory device 200 creates a“free channel” between the player 301 and the memory device's timemodule 204, allowing the player 301 to deliver a time stamp update fromthe time server 100 (see FIG. 3). This time stamp would then be used togenerate a time estimate against which the entity's credentials can bevalidated for authentication. A “free channel” refers to a communicationpipeline that is established without first authenticating an entity. Incontrast, a “secure channel” refers to a communication pipeline that isestablished only after an entity is authenticated.

It should be noted that although the player 301 does not need to beauthenticated in order for it to be used as a conduit to supply thememory device 200 with a time stamp from the time server 100, the timeserver 100 is preferably authenticated to ensure that the time stamp iscoming from a trusted source. This is shown in act 435 in FIGS. 4 and 6,where the time server's 100 certificate and CRL are verified beforeaccepting its time stamp. However, to avoid the “Catch 22” situationdiscussed above, the memory device 200 preferably assumes that thevalidity period for the time server's 100 certificate and CRL is validand, accordingly, does not verify the validity periods against agenerated time estimate.

When an entity is authenticated to the memory device 200, it can performvarious actions set forth in the ACR's permissions control record (PCR).For example, with reference again to FIG. 3, the player 301 cancommunicate with a DRM module 207 via a secure channel to attempt toaccess protected content 205 in the memory device 200. (As anotherexample, the ACR for the storage application 302 allows that application302 to store protected content 205 in the memory device 200.) Eventhough the player 301 has been authenticated, since the content isprotected, the DRM module 207 would attempt to validate the DRM license206 for the protected content 205 (e.g., by determining if the licenseis still valid or if it has expired) before unlocking the protectedcontent. To do this, the DRM module 207 would request a time estimatefrom the time module 204 in the memory device 204. (The time module 204refers to the software and/or hardware described above that is used tostore and generate the various components used to generate a timeestimate (e.g., time stamp, active time, number of power cycles,“stretch” factor, etc.).) The DRM module 207 compares the generated timeestimate to the expiration date and/or validity period in the license206 to determine whether or not the license is valid. The DRM module 207can perform additional checks to validate the license, such as, but notlimited to, determining whether the protected content 205 has beenplayed more than a specified number of times.

As mentioned above, the more recent the time stamp, the more accuratethe time estimate will likely be. In the above embodiment, a TUP in anACR determines if a time stamp update is needed. Accordingly, the TUPeffectively determines how accurate a generated time estimate will befor DRM license validation. In determining the parameters of the TUP,one needs to strike a balance between the needs of service providers,who are providing services with expiration considerations, and the needsof the end users, who may be inconvenienced when they need to connecttheir host devices to a network in order to get a fresh time stamp. Ifthe time tolerance were too loose, the service provider may looserevenue. On the other hand, if the time tolerance were too strict, theend user may decide to drop the service if frequent connections to anetwork to obtain a required time stamp update are too burdensome.

When the memory device 200 has a single ACR with a single TUP (ormultiple ACRs all sharing the same TUP), the single “one size fits all”TUP may not strike the right balance for all service providers.Accordingly, in this embodiment, the memory device 200 has a pluralityof ACRs 201, 202, each with a different TUP (TUP1, TUP2) that isconfigurable by its associated service provider. As discussed above,through the use of different ACRs, the memory device 200 can beconfigured to authenticate using different authentication schemes(symmetric, asymmetric authentication, etc). The use of different ACRsalso allows for configurable time tolerances. That is, through the useof configurable TUPs in the ACRs, service providers can define their owntime tolerance by specifying when one or more of the memory device'stime-telling parameters (e.g., active time, number of power cycles,“stretched” active time/down time) is considered obsolete and shouldtrigger a time stamp update. By making TUPs configurable, a serviceprovider can configure its time tolerance according to its specificneeds and its relationship with end users, instead of relying upon asingle “one size fits all” TUP.

For example, some service providers issue certificates for a very shorttime (e.g., ten minutes). By forcing the end user to get a newcertificate every time he wants to use the service on the memory device200, the service provider can closely monitor an end user's behavior andassess a fee every time the end user requests a certificate. So, forthis business model, the service provider needs a tight tolerances formonetization. As another example, if the service provider has a veryfluid install base of end users, the service provider may desire tofrequently revoke certificates as a major part of its business model. Inthis situation, the service provider would also want a tight timetolerance to make sure the most-up-to-date CRL is being used forauthentication. On the other hand, if the service provider is providinga monthly subscription service in which users would regularly connect tothe service provider's web site to get new content and receive a forcedtime stamp update, the service provider would not need as tight of atime tolerance because the end user will likely connect to the networkto get new content.

Instead of or in addition to using configurable TUPs on ACRs, aconfigurable TUP can be placed on DRM licenses for individual pieces ofcontent. In this way, instead of an authenticated entity treating allpieces of content equally, the entity can be forced to obtain a new timestamp for some content while using an existing time stamp for othercontent. (Unlike the TUP on an ACR which is only checked duringauthentication, a TUP on a license can be checked every time the DRMmodule 207 is attempting to validate the license.)

Consider, for example, the situation in which a user downloads atwo-hour movie to his memory device along with a license that says thatthe movie can only be viewed for 24 hours. While the service providermay not want a user to watch the movie after the 24 hour period, he mayalso not want to inconvenience a normal user by making him connect tothe network to obtain a new time stamp. Accordingly, the serviceprovider may decide to place a TUP on the license that requires a newtime stamp if the active time is more than four hours (the amount ofactive time required to watch the two-hour movie two times). If theactive time is greater than four hours when the DRM module 207 attemptsto validate the license, the user will not be able to watch themovie—not necessarily because the license expired, but because a newtime stamp is needed. (Instead of or in addition to active time, thenumber of power cycles can be used in the TUP. For example, based on anaverage usage pattern, ten or more power cycles may indicate that thememory device was used more than 24 hours.) If the time estimategenerated with the new time stamp indicates that the license if valid,the DRM module 207 will allow the movie to be played again.

By allowing the TUP to be configurable per license, a TUP can betailored to the content. Accordingly, if, instead of the movie expiringafter 24 hours, the movie expired after one week, the time tolerance onthe license can be set differently. For example, if the service providerestimates that the memory device is used, on average, 10 hours per day,the service provider can set the TUP in the license to trigger a timeupdate after 70 hours of active time (i.e., 10 hours-per-day times 7days). As another example, if instead of a two-hour movie, the contentwas a three-minute pay-per-view video that should only be watched once,the TUP can be designed such that a new time stamp would be requiredafter three-minutes of active time.

The service provider's business model can also be a consideration indesigning the TUP. For example, currently, a monthly subscriptionservice is a popular business model for distributing rights to protectedmusic. In a music subscription service, a user downloads as much musicas he wants from the service provider's web site and is allowed to playthat music as many times as he wants for one month. After that month,the user will need to renew his subscription to renew the license;otherwise, the license will expire, and the user will no longer be ableto play the music stored on his memory device. Users who frequentlyvisit the service provider's web site for more songs will receive a newtime stamp when they connect to the web site; hence, their memorydevices will be able to provide a more accurate time estimate. However,users who download a relatively large amount of music may notnecessarily reconnect to the service provider's web site before themonthly license expires. When the user eventually reconnects for moremusic, the service provider can charge the user for the time he wasallowed to play the music outside of the license terms. Because of this,as a business model, a service provider of a monthly subscription maywant a very different time tolerance than a service provider ofpay-per-use content, where a user may not go back to the web site wherehe received the pay-per-use content. In this situation, because a useris likely to come back for more music in a monthly subscription servicethan in a pay-per-use service, the service provider may not want astrict time tolerance because it may upset a customer by requiring himto obtain a new time stamp, even though he would otherwise haveeventually returned to the web site. Having a less-strict time tolerancemay mean that customers who never return to the service provider's website will be able to play music for longer than the one-month term ofthe license (e.g., for one-month of active time instead of one-month ofactual time). However, on balance, the service provider may decide thatsuch unauthorized use is an acceptable sacrifice to make in order toavoid inconveniencing and upsetting returning customers.

As another example, consider a business model in which a serviceprovider wants to provide point advertising to a cell phone when a useris using his cell phone to play audio or video content from a memorydevice. If the point advertising contains ads related to stores that arenear the location of the cell phone at the time the content is beingplayed, the host device needs to be connected to the network when thecontent is being played; otherwise, the location-specific pointadvertisement cannot be delivered. To ensure this happens, the TUP ofthe content can be set to a very low amount (e.g., one minute of activetime) to ensure that the user will connect to the network to get a newtime stamp. Once the user connects to the network, the network will knowthe cell phone's location and will be able to push the appropriate adcontent to the cell phone. On the other hand, if the service providermakes money just by knowing how many times the content was played, thetime tolerance can be much less strict.

As shown by the above examples, through the use of configurable TUPs onlicense files, the service provider of the particular content can strikewhatever time update balance he deems appropriate so as to not upset hiscustomers by requiring them to connect their host devices to the networkfor a time stamp update. It should be noted that, because the memorydevice in this embodiment is a multi-purpose, multi-application memorydevice with multiple TUPs, one service on the memory device can shutdown after a certain time, while other services on the memory device arestill enabled. That is, a player, even though authenticated, may be ableto play certain content on the memory device but may be prevented fromplaying other content on the memory device unless a new time stamp isobtained because of the different TUPs associated with the licenses ofthe different content.

As illustrated above, in these embodiments, the memory device comprisestwo separate components: a central security system and one or moreapplications separate from the central security system. (Because anapplication is separate from the central security system, an applicationwill sometimes be referred to herein as an “extension” or an “internalextension”). In the embodiment shown in FIG. 3, the application takesthe form of a DRM module 207. However, other applications can be used,such as those that provide, for example, e-commerce, banking, creditcard, electronic money, biometric, access control, personal data, orsecured email functionality. It should also be noted that while only asingle application is shown in the memory device 200 in FIG. 3, a memorydevice can have several applications (e.g., a DRM module and ane-commerce module).

The central security system, through the use of ACRs, authenticates anentity attempting to access protected pieces of data stored in thememory device via applications inside the memory device (e.g., a DRMagent). Once an entity authenticates to the memory device, a securedsession is opened between the entity and the application specified bythe ACR used to authenticate the entity. The entity can then sendcommands/requests to the associated application to access the protecteddata. In this way, the central security system acts as the maingatekeeper to the memory device. As described in more detail in the Ser.No. 11/557,028 patent application referenced above, the central securitysystem can also isolate various applications running on the memorydevice 200 so that one application does not have access to dataassociated with a different application.

While the central security system provides an access control mechanismand protects data stored in the memory device so that the data isaccessed only by the appropriate authorized entities, the centralsecurity system itself may not be able to understand and process thevery data it is protecting. It is the applications running on the memorydevice that can understand and process the protected data. For example,if the protected data is a DRM license, a DRM agent—not the centralsecurity system—would be able to validate the license. Accordingly, thecentral security system can be considered to be a configurable,application-independent toolbox. In operation, a service provider placesan application on the memory device and defines an ACR that associates aparticular entity with the application. From the central securitysystem's point of view, it does not know what the application does(e.g., whether the application provides DRM license validation,e-commerce functionality, etc.) but does know that only entitiesauthenticated to that particular ACR are allowed to communicate with theapplication defined in that ACR. Once an entity has been authenticatedby the central security system, the central security system opens asecure channel between the entity and the application.

In some situations, both the central security system and the applicationneed to know the time. For example, the central security system may needto know the time for time-based authentication (e.g., asymmetricauthentication), and the application may need to know the time fortime-based operations (e.g., DRM license validation). As mentionedabove, the memory device has a central time module that can provide timeto both the central security system and applications running on thememory device. For example, with reference to FIG. 3, the time module204 can provide time to asymmetric ACRs 201, 202 to authenticate variousentities, as well as to the DRM module 207 to verify license validity.As will be described below and in conjunction with FIG. 8, in somesituations, an application on a memory device can choose to use hosttime in addition to or instead of time from the memory device's timemodule.

FIG. 8 shows a memory device 600 in communication with a host device700. The host device 700 comprises an entity (here, a player 710) andhas some mechanism for providing time 720 (e.g., a battery backed-upclock). In this example, the memory device 600 has a symmetric ACR 610(although an asymmetric ACR can be used), a time module 620, a DRMmodule 630, protected content 640, and a license 650 for the protectedcontent 640. (In FIG. 8, the application in the memory device is a DRMmodule 630. It should be noted that other types of applications can beused, and more than one application can be running in the memorydevice.) When the player 710 authenticates to the memory device 600using the symmetric ACR 610, a secure channel 660 is established betweenthe player 710 and the DRM module 630, in accordance with parametersestablished in the symmetric ACR 610. The DRM module 630 and the player710 are not unfamiliar with each another, as a service provider definedthe symmetric ACR 610 to associate the DRM module 630 with the player710. Accordingly, there is a certain level of trust between the DRMmodule 630 and the player 710 since they are counterpart members of thesame group. Based on this trust, the DRM module 630 can be programmed toaccept host time 720 from the player 710 as a source of time to performDRM license validation. So, the DRM module 630 has two independentsources of time with which it can perform DRM license validation: thehost time 720 and the time from the memory device's central time module620. There are advantages and disadvantages associated with each ofthese sources of time. Because the memory device's time module 620 doesnot continuously keep track of time, time from the time module 620 maynot be as accurate at the host time 720, which is probably provided by abattery-backed-up continuous clock. On the other hand, due to all of thesecurity precautions discussed above, time from the time module 620 maybe more secure than the host time 720, especially if a user of the hostdevice 700 is able to alter the host time 720 using a simple userinterface.

An application running on the memory device 600 (such as the DRM module630) can be programmed to use these two different time sources in anyway desired to generate a time estimate for its time-based operation.(However, it is preferred that the application not be able to update thetime module 620 using the host time 720.) For example, the applicationcan be programmed to always use the host time 720 instead of the timefrom the time module 620 or always use the time from the time module 620instead of the host time 720. As another example, the application can beprogrammed to use the later (or earlier) of the host time 720 and thetime from the time module 620. The application can also be programmed togenerate a time estimate using both time sources in some fashion (e.g.,taking an average of the host time 720 and the time from the time module620, etc.). As yet another example, the application can determine whichtime source to use based on information about the host device 700. Theapplication can learn of the type of host device through theauthentication process (e.g., if asymmetric authentication is used, theauthentication algorithm can inform the application of the individualand group identities associated with the host device 700). Thisinformation can be important because some host devices may be moresecure than others. For example, if the host device is a PC, its clockcan be easily manipulated via a simple user interface on a softwareapplication. (In addition to not trusting the host time from arelatively untrustworthy host device, the application may not trust anentity running on such a host device with content keys, the licensevalues or terms, or the right to change the license, for example. Insuch a situation, the DRM agent may just stream the content out of thememory device to the host device (instead of giving the encryption keysand content to the host device).) However, if the host is a closedsystem, such as an MP3 player, the host's clock may be much moredifficult to manipulate. Accordingly, an application running on the hostdevice 600 may trust the host time 720 more when the host device 700 isan MP3 player than when the host device 700 is a PC.

In one embodiment, the player 710 pushes the host time 720 to the DRMmodule 630 when it sends a request to the DRM module 630 to play a song.The DRM module 630 then decides whether to use the host time 720 or thetime from the time module 620, as described above. Preferably, the hosttime 720 will only be used for a particular log-in session, which wouldbe a relatively short interval, instead of being used as an absolutecurrent time measurement for later sessions. Alternatively, the hosttime 720 can be stored for future use by the application, with“time-stretching” and the other mechanisms discussed above being(optionally) used to improve the accuracy of that time. However, it ispreferred that the host time be used only for an application'sparticular time-based operation and not be used to update the time inthe time module 620 (since an application is an “extension” and not partof the same trust camp as the central security system). Preferably, timein the time module 620 is only updated using trusted time servers (whichare a part of the same trust camp as the central security system), asdescribed above. It should also be noted that when several applicationsare running on the memory device 600, each application can have twosources of time: time from the time module 620 and time from the hostdevice operating the entity communicating with the application. However,it may be preferred to allow host time associated with one applicationto only be used with that application and not with other applicationsassociated with different host devices.

As discussed above, an application running on the memory device 600(such as the DRM module 630) can be programmed to compare the host time720 with the time from the time module 620 and use the later (orearlier) of the two times. The host time 720 can be earlier than thetime from the time module 620 because the host 700 fails to connect toits time server for a sufficiently long time that a time skew occurs inthe host time 720 or because the host clock was hacked, for example. Asalso discussed above, the host time 720 can be stored for future use bythe application. Combining these ideas, the host time 720 can be storedand later used (either alone or with the time from the time module 620)for comparison with time received from a different host device. Based onthe comparison, the memory device can decide whether to use the timefrom a current host device or stored time from a previous host device toperform a time-based operation. For example, the memory device can beprogrammed to take the earlier of the two times if the time-basedoperation is a “no earlier than” operation and the later of the twotimes if the time-based operation times is a “no later than” operation.In this way, time stamps received from other trusted host devices can beused as a reference for a single multi-host anti-rollback mechanismrelative to a single time server.

As also discussed above, a non-time-based authentication system (such assymmetric authentication) can be used to authenticate a host device.This allows an application's time-based operation (e.g., a DMRoperation) to be independent from the authentication time server. Thatis, since only the time from the host device or DRM server is used, theapplication's time-based operation does not depend on time from theauthentication time server or the memory device's time module.Accordingly, if, for whatever reason, there is a problem with theauthentication time server or if the time-based application chooses notto use time based on the authentication time server, the time-basedapplication can still perform its operation using the host time.

It should be noted that any of the above embodiments can be used aloneor together in combination. Other embodiments that can be used withthese embodiments are described in the patent applications incorporatedby reference. Further, while it is presently preferred that theseembodiments be implemented in a TrustedFlash™ memory device by SanDiskCorporation, it should be understood that these embodiments can be usedin any type of memory device. Also, these embodiments can be used innon-memory device fields where one encounters the general problem ofhaving an inaccurate clock and needing to know or use the time.Additionally, some or all of the acts described above can be performedon a host device (or some other device) instead of exclusively on thememory device.

It is intended that the foregoing detailed description be understood asan illustration of selected forms that the invention can take and not asa definition of the invention. It is only the following claims,including all equivalents, that are intended to define the scope of thisinvention. It should be noted that the acts recited in the claims can beperformed in any order—not necessarily in the order in which they arerecited. Finally, it should be noted that any aspect of any of thepreferred embodiments described herein can be used alone or incombination with one another.

1. A method for validating a digital rights management (DRM) license,the method comprising: with a memory device: receiving a request tovalidate a digital rights management (DRM) license stored on the memorydevice, wherein the DRM license is associated with a time stamp updatepolicy (TUP) that specifies when a new time stamp is needed; beforeattempting to validate the DRM license, determining if a new time stampis needed based on the TUP associated with the DRM license; and if a newtime stamp is needed, receiving the new time stamp and then attemptingto validate the DRM license using a time estimate based on the new timestamp.
 2. The method of claim 1 further comprising: with the memorydevice: if the new time stamp is not needed, attempting to validate theDRM license using a time estimate based on a last time stamp received bythe memory device.
 3. The method of claim 1, wherein the TUP comprisesone or more of the following parameters: a number of power cycles of thememory device since a last time stamp received by the memory device,active time of the memory device since the last time stamp, andstretched active time of the memory device since the last time stamp. 4.The method of claim 1 further comprising: with the memory device:receiving a request to validate a second DRM license stored on thememory device, wherein the second DRM license is associated with asecond TUP, different from the first-mentioned TUP, that specifies whena new time stamp is needed; before attempting to validate the second DRMlicense, determining if a new time stamp is needed based on the secondTUP; and if a new time stamp is needed, receiving the new time stamp andthen attempting to validate the second DRM license using a time estimatebased on the new time stamp.
 5. The method of claim 1, wherein the newtime stamp is generated by a time server.
 6. The method of claim 1,wherein the new time stamp is generated by a host device connected withthe memory device.
 7. The method of claim 1, wherein the memory devicestores digital rights management (DRM) keys and licenses to unlockprotected content stored on the memory device.
 8. The method of claim 1further comprising: with the memory device, prior to receiving therequest to validate the DRM license: receiving a request to authenticatean entity; before attempting to authenticate the entity, determining ifa new time stamp is needed based on a TUP associated with the entity,wherein the TUP associated with the entity is different from the TUP ofthe DRM license; and if a new time stamp is needed, receiving the newtime stamp and then attempting to authenticate the entity using a timeestimate based on the new time stamp.
 9. A method for validating adigital rights management (DRM) license, the method comprising: with amemory device: receiving a request to validate one of a plurality ofdigital rights management (DRM) licenses stored on the memory device,wherein each DRM license is associated with a different time stampupdate policy (TUP) that specifies when a new time stamp is needed;before attempting to validate the one of the plurality of DRM licenses,determining if a new time stamp is needed based on a TUP associated withthe one of the plurality of DRM licenses; and if a new time stamp isneeded, receiving the new time stamp and then attempting to validate theone of the plurality of DRM licenses using a time estimate based on thenew time stamp.
 10. The method of claim 9 further comprising: with thememory device: if the new time stamp is not needed, attempting tovalidate the one of the plurality of DRM licenses using a time estimatebased on a last time stamp received by the memory device.
 11. The methodof claim 9, wherein the TUP comprises one or more of the followingparameters: a number of power cycles of the memory device since a lasttime stamp received by the memory device, active time of the memorydevice since the last time stamp, and stretched active time of thememory device since the last time stamp.
 12. The method of claim 9,wherein the new time stamp is generated by a time server.
 13. The methodof claim 9, wherein the new time stamp is generated by a host deviceconnected with the memory device.
 14. The method of claim 9, wherein thememory device stores digital rights management (DRM) keys and licensesto unlock protected content stored on the memory device.
 15. The methodof claim 9 further comprising: with the memory device, prior toreceiving the request to validate the one of the plurality of DRMlicenses: receiving a request to authenticate an entity; beforeattempting to authenticate the entity, determining if a new time stampis needed based on a TUP associated with the entity, wherein the TUPassociated with the entity is different from the TUPs associated withthe plurality of DRM licenses; and if a new time stamp is needed,receiving the new time stamp and then attempting to authenticate theentity using a time estimate based on the new time stamp.